package com.langll.ai.service;

import com.langll.ai.controller.response.ModelDetailsResponse;
import com.langll.ai.controller.response.ModelResponse;
import com.langll.ai.controller.response.ModelTagsResponse;
import org.springframework.stereotype.Service;

import java.util.Arrays;
import java.util.List;

/**
 * @author langll
 * @des 模型相关服务
 * @date 2025/6/5
 */
@Service
public class ModelService {

    /**
     * 获取所有可用的模型信息
     * @return 模型标签响应
     */
    public ModelTagsResponse getModelTags() {
        // 创建模型列表
        List<ModelResponse> models = Arrays.asList(
                createQwen3_0_6bModel(),
                createQwen3_4bModel()
        );

        // 创建响应
        return new ModelTagsResponse().setModels(models);
    }

    /**
     * 创建 qwen3:0.6b 模型信息
     * @return 模型响应
     */
    private ModelResponse createQwen3_0_6bModel() {
        // 创建模型详情
        ModelDetailsResponse details = new ModelDetailsResponse()
                .setParentModel("")
                .setFormat("gguf")
                .setFamily("qwen3")
                .setFamilies(Arrays.asList("qwen3"))
                .setParameterSize("751.63M")
                .setQuantizationLevel("Q4_K_M");

        // 创建模型信息
        return new ModelResponse()
                .setName("qwen3:0.6b")
                .setModel("qwen3:0.6b")
                .setModifiedAt("2025-05-27T09:20:37.823931494+08:00")
                .setSize(522653526L)
                .setDigest("3bae9c93586b27bedaa979979733c2b0edd1d0defc745e9638f2161192a0ccf0")
                .setDetails(details);
    }

    /**
     * 创建 qwen3:4b 模型信息
     * @return 模型响应
     */
    private ModelResponse createQwen3_4bModel() {
        // 创建模型详情
        ModelDetailsResponse details = new ModelDetailsResponse()
                .setParentModel("")
                .setFormat("gguf")
                .setFamily("qwen3")
                .setFamilies(Arrays.asList("qwen3"))
                .setParameterSize("4.0B")
                .setQuantizationLevel("Q4_K_M");

        // 创建模型信息
        return new ModelResponse()
                .setName("qwen3:4b")
                .setModel("qwen3:4b")
                .setModifiedAt("2025-06-05T15:25:20.933131618+08:00")
                .setSize(2620788260L)
                .setDigest("2bfd38a7daaf4b1037efe517ccb73d1a3bbd4822cf89f1a82be1569050a114e0")
                .setDetails(details);
    }
}
